package com.yqh.Reader;

import java.io.FileInputStream;
import java.io.FileReader;
import java.io.IOException;
import java.io.Reader;

/**
 * 字符输入流读数据
 *
 * @author 阳秋豪
 * @createTime 2024/3/7
 */
public class Test1 {
    public static void main(String[] args) throws IOException {
        /*------------------- 字符输入流的细节 -------------------*/
        // 1、read() 细节
        // -- 默认也是一个字节一个字节的读取的，如果遇到中文就会一次读取多个字节
        // -- 在读取之后，方法的底层还会对字节进行解码并转成十进制
        // -- 最终把这个十进制作为返回值返回（这个十进制的数据也表示在字符集上的数字）
        // -- 英文：文件里面二进制数据 01100001 -- 使用 read 方法进行读取，解码并转成十进制 97
        // -- 中文：文件里面的二进制数据 11100110 10110001 10001001 -- 使用 read 方法进行读取，解码并转成十进制 27721
        // 2、read(chars)细节
        // -- 读取数据，解码，强转三步合并了，最后把强转之后的字符放到数组当中
        // -- 相当于：空参的read() + 强转类型转换

        /*------------------- 字符输入流读数据代码 -------------------*/
        // 1、创建对象并关联本地文件
        FileReader fileReader = new FileReader("d.txt");
        // 2、读取数据
        char[] chars = new char[1024];
        int len;
        while ((len = fileReader.read(chars)) != -1) {
            System.out.print(new String(chars, 0, len));
        }
        // 3、释放资源
        fileReader.close();
    }
}
